There is an event distribution system which can deliver data including no smaller than one data item such as an ID, a position and clock time (hereinafter, such data is referred to as “event”) to an application. Each data item includes an attribute name and an attribute value. For example, when an event is generated based on a temperature of 20° C. and a humidity of 60% observed by a temperature and humidity sensors, the event can be expressed as it is formed by a data item having an attribute name “temperature” and an attribute value of 20° C. to that and a data item having an attribute name “humidity” and an attribute value of 60% to that.
A subscription, a subscription ID for identifying the subscription and a request type for distinguishing between a registration request and a deletion request are inputted (subscribed) from an external program (subscriber) to an event distribution system. A subscription includes a condition of an event (event condition) and the ID of an application of a notification destination (application ID). In the case where a request type is a registration request, a subscription ID and a subscription are stored in the event distribution system as a pair. An event distribution system can describe a plurality of attribute conditions as an event condition. For example, an event distribution system can designate an attribute name and a range of an attribute value to that as an attribute condition.
When an event occurs in an external program (publisher), the event is inputted (published) to an event distribution system. When the inputted event meets the event condition of a registered subscription, the event distribution system transmits the event to an application which is specified by an application ID designated along with the event condition as a pair.
Here, it is the that an event meets an event condition when, about every attribute condition constituting the event condition, the event includes an attribute name designated by the attribute condition concerned and an attribute value range designated by the attribute condition includes the attribute value to the attribute name described in the event. For example, it is supposed that an event condition having an attribute name “temperature” and a range of an attribute value of “10° C. or more, and 30° C. or less” to the attribute name has been registered with an event distribution system. It is supposed that, in this state, an event including an attribute having an attribute name “temperature” and an attribute value of “20° C.” to that and an attribute having the attribute name “humidity” and an attribute value of “60%” to that has occurred. About the attribute name “temperature”, it can be the that the event meets the event condition because “20° C.” is included in “10° C. or more, and 30° C. or less” designated by the event condition. About the attribute name “humidity”, it does not have an influence on whether the event condition is met or not because is not designated by the event condition.
A technological example which handles an event thus is disclosed in non-patent literature 1. FIG. 19 is a diagram illustrating a technology disclosed in non-patent literature 1. An event (Publication in FIG. 19) and an event condition (Subscription in FIG. 19) shown in FIG. 19 include an attribute name x and an attribute name y. It is described in the event that an attribute value to the attribute name x is 100, and an attribute value to the attribute name y is 200. It is described in the event condition that the range of an attribute value to the attribute name x is not less than 50 and not more than 150, and the range of an attribute value to the attribute name y is not less than 150 and not more than 250. The event meets the event condition. The system shown in FIG. 19 includes a subsystems (hubs) corresponding to each attribute name on one-on-one basis. A hub is connected to not less than one node in a ring shape. The next node on a ring seen from a certain node is called a successor. The prior node on a ring seen from a certain nod is called a predecessor. A node belonging to a hub manages a range of an attribute value (attribute value range) to an attribute name corresponding to the hub.
A node which has received a subscription from a sub scriber or has received an event from a publisher transmits the event or the subscription to a node belonging to a hub different from the hub to which the former node belongs. Therefore, a node holds a network address of a node belonging to a hub different from a hub to which the former node belongs (such node is referred to as a “cross hub adjacent node”). A method to determine a cross hub adjacent node is disclosed in non-patent literature 2.
Immediately after a new node has participated in a hub, a system makes the cross hub adjacent node of the successor of the node be a cross hub adjacent node link of the node. The system begins a maintenance process after that. In the maintenance process, the system performs a random walk in each of the other hubs and determines a new cross hub adjacent node. A random walk means that a node which begins the random walk accesses an optional node recorded in a routing table (hop), the accessed node performs a further hop by the same way as the above, and such hop is repeated until a specified hop count is reached. Then, the system determines a node which is reached at the time when the specified hop count has been reached as a cross hub adjacent node.